package com.atde._04_structural_design_patterns.composite;


import java.util.ArrayList;
import java.util.List;

/**
 * @BelongsProject: hsp_java_design_mode
 * @BelongsPackage: com.atde._04_structural_design_patterns.composite
 * @Author: Del
 * @CreateTime: 2025-06-23  00:38
 * @Description: 组合模式 --- 聚合多个对象，将对象组合为树形结构，树形结构描述了整体与部分的关系。
 * College 此类也继承于最大的抽象类 OrganizationComponent，它的作用用于管理 学院下的部门
 * 它相当于一个学院，可以管理学院下的部门
 * @Version: 1.0
 */
public class College extends OrganizationComponent{

    // 此集合中存储 学院下的 所有的 院系
    List<OrganizationComponent> organizationComponents = new ArrayList<>();

    public College(String name, String desc) {
        super(name, desc);
    }

    @Override
    public String getDesc() {
        return super.getDesc();
    }

    @Override
    public String getName() {
        return super.getName();
    }

    @Override
    protected void add(OrganizationComponent organizationComponent) {
        organizationComponents.add(organizationComponent);
    }

    @Override
    protected void remove(OrganizationComponent organizationComponent) {
        organizationComponents.remove(organizationComponent);
    }

    @Override
    protected void print() {
        System.out.println("==========="+getName()+"===========");
        for (OrganizationComponent organizationComponent : organizationComponents) {
            organizationComponent.print();
        }
    }
}
